﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using GandAInvitaciones.BusinessEntity;
using System.Collections;
using System.Data;

namespace GandAInvitaciones.Service
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "JsonService" in code, svc and config file together.
    public class JsonService : IJsonService
    {
        #region Pruebas
        public List<BusinessEntity.Visita> GetVisitas()
        {
            List<Visita> lst = new List<Visita>();
            for (int i = 0; i < 5; i++)
            {
                Visita v = new Visita();
                v.IpVista = "127.0.0.1";
                v.Pais = "Mexico";
                v.ReferenciaUrl = i.ToString();
                lst.Add(v);
            }

            return lst;
        }

        public Person GetData(string id)
        {
            // lookup person with the requested id 
            return new Person()
            {
                Id = Convert.ToInt32(id),
                Name = "Leo Messi"
            };
        }

        public Person GetData2(int id, string name)
        {
            return new Person()
            {
                Id = Convert.ToInt32(id),
                Name = name
            };
        }
                
        public int SaveVisita(Visita obj)
        {
            GandAInvitaciones.BusinessComponent.CommonService.InsertaVisita(obj);
            return 10;
        }

        [DataContract]
        public class Person
        {
            [DataMember(Name = "id")]
            public int Id { get; set; }

            [DataMember(Name = "name")]
            public string Name { get; set; }
        }
        #endregion

        #region app
        public List<BusinessEntity.Categoria> GetCategorias()
        {
            List<BusinessEntity.Categoria> lst = new List<BusinessEntity.Categoria>();
            Categoria p;

            DataSet ds = new BusinessComponent.ConsultaService().EjecutaConsulta("app.spObtenCategoriasBabyShower", null);
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                p = new Categoria();
                p.IdCategoria = Convert.ToInt32(row["IdCategoria"]);
                p.NomCategoria = row["NomCategoria"].ToString();
                p.NumProveedores = Convert.ToInt32(row["NumProveedores"]);
                lst.Add(p);
            }

            return lst;

        }

        public List<BusinessEntity.Proveedor> GetProveedores(string idCategoria)
        {
            List<BusinessEntity.Proveedor> lst = new List<BusinessEntity.Proveedor>();
            Proveedor p;
            ArrayList parametros = new ArrayList();
            //Parametros
            parametros.Add(CreaParametroConsulta("@pnIdCategoria", idCategoria, Parameter.vEnumType.Int));
            Parameter[] prms = new Parameter[parametros.Count];
            parametros.CopyTo(prms);

            DataSet ds = new BusinessComponent.ConsultaService().EjecutaConsulta("app.spObtenProveedoresBabyShower", prms);
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                p = new Proveedor();
                p.IdProveedor = Convert.ToInt32(row["IdProveedor"]);
                p.NomProveedor = row["NomProveedor"].ToString();
                p.Direccion = row["Direccion"].ToString();
                p.Email = row["Email"].ToString();
                p.Fabebook = row["Fabebook"].ToString();
                p.Telefono1 = row["Telefono1"].ToString();
                p.Telefono2 = row["Telefono2"].ToString();
                p.Descripcion = row["Descripcion"].ToString();
                p.PaginaWeb = row["PaginaWeb"].ToString();
                p.LogoPath = row["LogoPath"].ToString();
                lst.Add(p);
            }

            return lst;
        }

        public List<BusinessEntity.Proveedor> GetProveedor(string idProveedor)
        {
            List<BusinessEntity.Proveedor> lst = new List<BusinessEntity.Proveedor>();
            Proveedor p;
            ArrayList parametros = new ArrayList();
            //Parametros
            parametros.Add(CreaParametroConsulta("@pnIdProveedor", idProveedor, Parameter.vEnumType.Int));
            Parameter[] prms = new Parameter[parametros.Count];
            parametros.CopyTo(prms);

            DataSet ds = new BusinessComponent.ConsultaService().EjecutaConsulta("app.spObtenProveedorBabyShower", prms);
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                p = new Proveedor();
                p.IdProveedor = Convert.ToInt32(row["IdProveedor"]);
                p.NomProveedor = row["NomProveedor"].ToString();
                p.Direccion = row["Direccion"].ToString();
                p.Email = row["Email"].ToString();
                p.Fabebook = row["Fabebook"].ToString();
                p.Telefono1 = row["Telefono1"].ToString();
                p.Telefono2 = row["Telefono2"].ToString();
                p.Descripcion = row["Descripcion"].ToString();
                p.PaginaWeb = row["PaginaWeb"].ToString();
                //p.Logo = (byte[])row["Logo"];
                p.LogoPath = row["LogoPath"].ToString();
                lst.Add(p);
            }

            return lst;
        }

        public static Parameter CreaParametroConsulta(string _nombreParametro, object _valor, Parameter.vEnumType _type)
        {
            Parameter p = new Parameter();
            p.NombreParametro = _nombreParametro;
            p.Valor = _valor;
            p.Type = _type;

            return p;
        }

        public List<Promocion> GetPromociones()
        {
            List<BusinessEntity.Promocion> lst = new List<BusinessEntity.Promocion>();
            Promocion p;

            DataSet ds = new BusinessComponent.ConsultaService().EjecutaConsulta("app.spObtenPromocionesBabyShower", null);
            foreach (DataRow row in ds.Tables[0].Rows)
            {
                p = new Promocion();
                p.IdPromocion = Convert.ToInt32(row["IdPromocion"]);
                p.IdProveedor = Convert.ToInt32(row["IdProveedor"]);
                p.PathPromo = row["PathPromo"].ToString();
                lst.Add(p);
            }

            return lst;
        }
        #endregion
    }
}
